package com.atguigu.java1;

import java.lang.annotation.*;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.ElementType.LOCAL_VARIABLE;

/**
 * @author yihu
 * @create 2021-03-02 16:31
 * @email:1057202547@qq.com
 * @dec: 自定义注解  元注解
 */
//Retention：指定所修饰的 Annotation 的生命周期：SOURCE\CLASS（默认行为）\RUNTIME
//           只有声明为RUNTIME生命周期的注解，才能通过反射获取。
//Target:用于指定被修饰的 Annotation 能用于修饰哪些程序元素    （类，枚举，方法，属性。。。。。）
//@Inherited 被它修饰的 Annotation 将具有继承性。
    //@Repeatable jdk 8 中注解的新特性：可重复注解、类型注解
        // ① 在MyAnnotation上声明@Repeatable，成员值为MyAnnotations.class
        // ② MyAnnotation的Target和Retention等元注解与MyAnnotations相同。
@Inherited
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,TYPE_PARAMETER,TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(Myannotations.class)
public @interface Myannotion {

    //属性
    String value() default  "hi";

}
